home *** CD-ROM | disk | FTP | other *** search
/ PC-Blue - MS DOS Public Domain Library / PC-Blue MS-DOS Public Domain Library - NYACC.iso / vol242 / gwclock.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1986-12-01  |  4.3 KB  |  130 lines

  1. 10  KEY OFF:SCREEN 100:CLS
  2. 20  DEFINT B-Z:DEFSNG A
  3. 30  REM ************** CREATE CLOCK'S NUMERALS AND SAVE IN ARRAYS *******
  4. 40  LOCATE 12,40:PRINT "1";
  5. 50  DIM A1%(40):GET (312,187)-(320,177),A1%
  6. 60  LOCATE 12,40:PRINT "2";
  7. 70  DIM A2%(40):GET (312,187)-(320,177),A2%
  8. 80  LOCATE 12,40:PRINT "3"
  9. 90  DIM A3%(40):GET (312,187)-(320,177),A3%
  10. 100  LOCATE 12,40:PRINT "4"
  11. 110  DIM A4%(40):GET (312,187)-(320,177),A4%
  12. 120  LOCATE 12,40:PRINT "5"
  13. 130  DIM A5%(40):GET (312,187)-(320,177),A5%
  14. 140  LOCATE 12,40:PRINT "6"
  15. 150  DIM A6%(40):GET (312,187)-(320,177),A6%
  16. 160  LOCATE 12,40:PRINT "7"
  17. 170  DIM A7%(40):GET (312,187)-(320,177),A7%
  18. 180  LOCATE 12,40:PRINT "8"
  19. 190  DIM A8%(40):GET (312,187)-(320,177),A8%
  20. 200  LOCATE 12,40:PRINT "9"
  21. 210  DIM A9%(40):GET (312,187)-(320,177),A9%
  22. 220  LOCATE 12,40:PRINT "10"
  23. 230  DIM A10%(60):GET (312,187)-(328,177),A10%
  24. 240  LOCATE 12,40:PRINT "11"
  25. 250  DIM A11%(60):GET (312,187)-(328,177),A11%
  26. 260  LOCATE 12,40:PRINT "12"
  27. 270  DIM A12%(60):GET (312,187)-(328,177),A12%
  28. 280  REM ****************** INITIALIZE ALARM SETTING ********************
  29. 290  IF ALRM$="" THEN ALRM$="XX:XX"
  30. 300  REM ****************** SET THE SCREEN MODE AND COLOR ***************
  31. 310  SCREEN 100:CLS:COLOR 10
  32. 320  REM ****************** DRAW THE CLOCK FACE *************************
  33. 330  CIRCLE (320,160),200
  34. 340  CIRCLE (320,160),150
  35. 350  PAINT (320,8),3
  36. 360  REM ****************** PUT TICK MARKS ON THE CLOCK FACE ************
  37. 370  FOR I=0 TO 360 STEP 30:DRAW "bm320,160c0ta=i;u130":NEXT I
  38. 380  FOR I=0 TO 360 STEP 6:DRAW "bm320,160c0ta=i;u125":NEXT I
  39. 390  REM ****************** PUT THE NUMBERS ON THE CLOCK FACE ***********
  40. 400  PUT (311,16),A12%
  41. 410  PUT (225,33),A11%
  42. 420  PUT (405,35),A1%
  43. 430  PUT (158,84),A10%
  44. 440  PUT (470,84),A2%
  45. 450  PUT (138,155),A9%
  46. 460  PUT (490,155),A3%
  47. 470  PUT (162,225),A8%
  48. 480  PUT (470,225),A4%
  49. 490  PUT (225,280),A7%
  50. 500  PUT (405,280),A5%
  51. 510  PUT (316,300),A6%
  52. 520  REM ****************** RESET KEY TRAPS *****************************
  53. 530  FOR I=1 TO 10:KEY(I) OFF:NEXT I
  54. 540  REM ****************** PRINT TEXT **********************************
  55. 550  LOCATE 1,72:PRINT "AT&T";
  56. 560  LOCATE 2,68:PRINT "TECHNOLOGIES";
  57. 570  LOCATE 3,72:PRINT "INC.";
  58. 580  LOCATE 23,1:PRINT STRING$(80,61);
  59. 590  LOCATE 24,1:PRINT "F1=Set Time        F2=Set Alarm          F9=Exit to Basic        F10=Exit to DOS";
  60. 600  LOCATE 25,1:PRINT STRING$(80,61);
  61. 610  IF ALRM$="XX:XX" GOTO 650
  62. 620  LOCATE 1,1:PRINT "ALARM IS SET";
  63. 630  LOCATE 2,1:PRINT "   ";ALRM$;
  64. 640  GOTO 670
  65. 650  LOCATE 1,1:PRINT "ALARM IS OFF";
  66. 660  REM ****************** SET UP KEY TRAPS ****************************
  67. 670  KEY(1) ON:KEY(2) ON:KEY(9) ON:KEY(10) ON
  68. 680  ON KEY(1) GOSUB 1070:ON KEY(2) GOSUB 1140
  69. 690  ON KEY(9) GOSUB 1200:ON KEY(10) GOSUB 1210
  70. 700  REM ****************** INITIALIZE SOME VARIABLES *******************
  71. 710  REM ****************** FIRST TIME THRU LOOP FLAG *******************
  72. 720  FIRSTLOOP$="Y"
  73. 730  CH=0:CM=0:CS=0
  74. 740  REM ****************** THIS IS A FOREVER LOOP **********************
  75. 750  PH=CH:PM=CM:PS=CS
  76. 760  T$=TIME$
  77. 770  IF ALRM$="XX:XX" THEN GOTO 790
  78. 780  IF MID$(ALRM$,1,5)=MID$(T$,1,5) THEN GOSUB 1220
  79. 790  LOCATE 18,1:PRINT "TIME: ";T$;
  80. 800  LOCATE 18,65:PRINT "DATE: ";DATE$;
  81. 810  REM ******* VARIABLE DEFINITIONS
  82. 820  REM ******* PS = PREVIOUS SECOND, CS = CURRENT SECOND
  83. 830  REM ******* PM = PREVIOUS MINUTE, CM = CURRENT MINUTE
  84. 840  REM ******* PH = PREVIOUS HOUR,   CH = CURRENT HOUR
  85. 850  REM ******* APS = ANGLE OF PREV SEC., ACS = ANGLE OF CURRENT SECOND
  86. 860  REM ******* APM = ANGLE OF PREV MIN., ACM = ANGLE OF CURRENT MINUTE
  87. 870  REM ******* APH = ANGLE OF PREV HOUR, ACH = ANGLE OF CURRENT HOUR
  88. 880  CS=VAL(MID$(T$,7,2)):APS=(-PS*6):ACS=(-CS*6)
  89. 890  DRAW "bm320,160c0ta=aps;u118"
  90. 900  DRAW "bm320,160c3ta=acs;u118"
  91. 910  CM=VAL(MID$(T$,4,2))
  92. 920  IF CM=PM AND APS<>ACM AND FIRSTLOOP$<>"Y" THEN GOTO 960
  93. 930  APM=(-PM*6):ACM=(-CM*6)
  94. 940  DRAW "bm320,160c0ta=apm;u100"
  95. 950  DRAW "bm320,160c3ta=acm;u100"
  96. 960  CH=VAL(MID$(T$,1,2))
  97. 970  IF CH>=12 THEN CH=CH-12
  98. 980  IF CM=PM AND ABS(APM-ACH)>=3 AND ABS(APS-ACH)>=3 AND FIRSTLOOP$<>"Y" THEN GOTO 1020
  99. 990  APH=(-PH*30)+(-PM*0.5):ACH=(-CH*30)+(-CM*0.5)
  100. 1000  DRAW "bm320,160c0ta=aph;u70"
  101. 1010  DRAW "bm320,160c3ta=ach;u70"
  102. 1020  FOR I=1 TO 10:CIRCLE (320,160),I:NEXT I
  103. 1030  FIRSTLOOP$="N"
  104. 1040  IF T$=TIME$ THEN GOTO 1040
  105. 1050  GOTO 740
  106. 1060  ************** THIS IS THE END OF THE FOREVER LOOP *****************
  107. 1070  CLS:LOCATE 5,5:PRINT "THE TIME IS NOW: ";T$
  108. 1080  LOCATE 7,5:INPUT "ENTER NEW TIME (IF NEEDED): ";T$
  109. 1090  IF T$<>"" THEN TIME$=T$
  110. 1100  CLS:LOCATE 5,5:PRINT "THE DATE IS: ";DATE$
  111. 1110  LOCATE 7,5:INPUT "ENTER NEW DATE (IF NEEDED): ";T$
  112. 1120  IF T$<>"" THEN DATE$=T$
  113. 1130  T$="00:00:00":RETURN 310
  114. 1140  CLS
  115. 1150  LOCATE 5,5:PRINT "ALARM NOW SET FOR: ";ALRM$
  116. 1160  LOCATE 7,5:INPUT "ENTER NEW SETTING IF NEEDED (0 TO TURN OFF)";T$
  117. 1170  IF T$="" THEN RETURN 310
  118. 1180  IF T$="0" THEN ALRM$="XX:XX" ELSE ALRM$=T$
  119. 1190  T$="00:00:00":RETURN 310
  120. 1200  CLS:SCREEN 0:KEY ON:END
  121. 1210  SYSTEM
  122. 1220  CLS:SCREEN 1,0:LOCATE 5,9:PRINT "* * *  ALARM  * * *"
  123. 1230  LOCATE 9,5:PRINT "PRESS ANY KEY TO STOP ALARM"
  124. 1240  ALRM$="XX:XX"
  125. 1250  T$=INKEY$
  126. 1260  IF T$<>"" THEN GOTO 1290
  127. 1270  BEEP:BEEP:BEEP
  128. 1280  GOTO 1250
  129. 1290  T$="00:00:00":RETURN 310
  130.